Reference-mapping task


This single-cell RNA-seq reference-mapping task describes an example of reference-mapping a human COVID-19 peripheral blood mononuclear cells (PBMC) against a previously annotate human PBMC data set. The COVID data set was downloaded as Seurat object from (cziscience)[https://cellxgene.cziscience.com] (see the R script 01_create_datasets.R) and the reference previously annotated PBMC data set retrieved from SeuratData (v.0.2.2.9001):

  • reference (ref): 5,000 genes x 36,433 cells

  • query (query): 17,374 genes x 14,783 cells


The analyses performed in this notebook rely in the Seurat (v.5.1.0).

Import the main packages used in this notebook: Seurat (v.5.1.0), SeuratWrappers (v.0.3.2 - integration wrappers for Seurat), dplyr (v.1.1.4 - wrangling data), patchwork (v.1.2.0 - visualization), ComplexHeatmap (v.2.15.4 - heatmap), Azimuth (v.0.5.0 - reference-mapping).

## Import packages
library("dplyr") # data wrangling
library("Seurat") # scRNA-seq analysis
library("Azimuth") # reference-mapping
library("patchwork") # viz
library("ComplexHeatmap") # heatmap

Create output directories to save intermediate results, figures, tables and R objects.

## Output directories
res.dir <- file.path("../results", "covid_refmap_task", c("plots", "tables", "objects"))
for (folder in res.dir) if (!dir.exists(folder)) dir.create(path = folder, recursive = TRUE)






(1) Import datasets

(5 min)

AIM: Import and explore the Seurat object data.


Import the human PBMCs from COVID-19 patients (query) as well as the healthy human PBMCs (ref) as Seurat objects located at data/covid.rds and data/pbmcref.

## Import query and reference Seurat objects
data.dir <- "../data"

# Reference
ref <- readRDS(file = file.path(data.dir, "pbmcref.rds"))

# Query
query <- readRDS(file = file.path(data.dir, "covid.rds"))

Explore quickly the Seurat query and `ref`` objects.

## Explore Seurat objects
# Print Seurat object
query
## An object of class Seurat 
## 17374 features across 14783 samples within 1 assay 
## Active assay: RNA (17374 features, 0 variable features)
##  2 layers present: counts, data
##  3 dimensional reductions calculated: pca, tsne, umap
ref
## An object of class Seurat 
## 5228 features across 36433 samples within 2 assays 
## Active assay: refAssay (5000 features, 0 variable features)
##  1 layer present: data
##  1 other assay present: ADT
##  2 dimensional reductions calculated: refUMAP, refDR
# Structure
str(query)
## Formal class 'Seurat' [package "SeuratObject"] with 13 slots
##   ..@ assays      :List of 1
##   .. ..$ RNA:Formal class 'Assay5' [package "SeuratObject"] with 8 slots
##   .. .. .. ..@ layers    :List of 2
##   .. .. .. .. ..$ counts:Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
##   .. .. .. .. .. .. ..@ i       : int [1:14354790] 4 13 17 31 48 54 70 87 128 141 ...
##   .. .. .. .. .. .. ..@ p       : int [1:14784] 0 1407 2310 3187 4120 4587 5331 5840 7080 7596 ...
##   .. .. .. .. .. .. ..@ Dim     : int [1:2] 17374 14783
##   .. .. .. .. .. .. ..@ Dimnames:List of 2
##   .. .. .. .. .. .. .. ..$ : NULL
##   .. .. .. .. .. .. .. ..$ : NULL
##   .. .. .. .. .. .. ..@ x       : num [1:14354790] 3 1 1 1 8 1 1 1 2 14 ...
##   .. .. .. .. .. .. ..@ factors : list()
##   .. .. .. .. ..$ data  :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
##   .. .. .. .. .. .. ..@ i       : int [1:14354790] 4 13 17 31 48 54 70 87 128 141 ...
##   .. .. .. .. .. .. ..@ p       : int [1:14784] 0 1407 2310 3187 4120 4587 5331 5840 7080 7596 ...
##   .. .. .. .. .. .. ..@ Dim     : int [1:2] 17374 14783
##   .. .. .. .. .. .. ..@ Dimnames:List of 2
##   .. .. .. .. .. .. .. ..$ : NULL
##   .. .. .. .. .. .. .. ..$ : NULL
##   .. .. .. .. .. .. ..@ x       : num [1:14354790] 9.44 7.86 7.86 7.86 10.85 ...
##   .. .. .. .. .. .. ..@ factors : list()
##   .. .. .. ..@ cells     :Formal class 'LogMap' [package "SeuratObject"] with 1 slot
##   .. .. .. .. .. ..@ .Data: logi [1:14783, 1:2] TRUE TRUE TRUE TRUE TRUE TRUE ...
##   .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. .. .. ..$ : chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   .. .. .. .. .. .. .. ..$ : chr [1:2] "counts" "data"
##   .. .. .. .. .. ..$ dim     : int [1:2] 14783 2
##   .. .. .. .. .. ..$ dimnames:List of 2
##   .. .. .. .. .. .. ..$ : chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   .. .. .. .. .. .. ..$ : chr [1:2] "counts" "data"
##   .. .. .. ..@ features  :Formal class 'LogMap' [package "SeuratObject"] with 1 slot
##   .. .. .. .. .. ..@ .Data: logi [1:17374, 1:2] TRUE TRUE TRUE TRUE TRUE TRUE ...
##   .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. .. .. ..$ : chr [1:17374] "MED11" "SERAC1" "ALG10B" "MTMR3" ...
##   .. .. .. .. .. .. .. ..$ : chr [1:2] "counts" "data"
##   .. .. .. .. .. ..$ dim     : int [1:2] 17374 2
##   .. .. .. .. .. ..$ dimnames:List of 2
##   .. .. .. .. .. .. ..$ : chr [1:17374] "MED11" "SERAC1" "ALG10B" "MTMR3" ...
##   .. .. .. .. .. .. ..$ : chr [1:2] "counts" "data"
##   .. .. .. ..@ default   : int 1
##   .. .. .. ..@ assay.orig: chr(0) 
##   .. .. .. ..@ meta.data :'data.frame':  17374 obs. of  0 variables
##   .. .. .. ..@ misc      :List of 1
##   .. .. .. .. ..$ calcN: logi TRUE
##   .. .. .. ..@ key       : chr "rna_"
##   ..@ meta.data   :'data.frame': 14783 obs. of  39 variables:
##   .. ..$ orig.ident                              : Factor w/ 1 level "SeuratProject": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ nCount_RNA                              : num [1:14783] 4332 2220 2493 2159 1067 ...
##   .. ..$ nFeature_RNA                            : int [1:14783] 1407 903 877 933 467 744 509 1240 516 875 ...
##   .. ..$ disease stage                           : Factor w/ 2 levels "remission","severe": 2 1 1 2 1 2 2 1 1 2 ...
##   .. ..$ treatment                               : Factor w/ 1 level "400 mg Tocilizumab at day 1": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ timepoint                               : Factor w/ 3 levels "day 1","day 5",..: 1 3 2 1 2 1 1 2 2 1 ...
##   .. ..$ Dataset                                 : Factor w/ 1 level "Guo et al._Nature Communication": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ sample                                  : Factor w/ 7 levels "Guo_P1-day1-rep1",..: 2 7 3 1 3 2 2 4 6 5 ...
##   .. ..$ disease_original                        : Factor w/ 2 levels "COVID-19 Mild/Remission",..: 2 1 1 2 1 2 2 1 1 2 ...
##   .. ..$ disease_general                         : Factor w/ 2 levels "COVID-19 Remission",..: 2 1 1 2 1 2 2 1 1 2 ...
##   .. ..$ COVID-19 Condition                      : Factor w/ 2 levels "remission","severe": 2 1 1 2 1 2 2 1 1 2 ...
##   .. ..$ Lineage                                 : Factor w/ 7 levels "Hematopoietic_Mega",..: 6 5 5 5 5 3 5 3 1 5 ...
##   .. ..$ Cell.group                              : Factor w/ 13 levels "B cell","CD4+ T cell",..: 4 3 2 3 2 1 3 1 11 3 ...
##   .. ..$ Cell.class_reannotated                  : Factor w/ 18 levels "B intermediate",..: 8 7 5 7 4 3 7 2 14 7 ...
##   .. ..$ nFeaturess_RNA                          : num [1:14783] 1410 904 877 933 468 ...
##   .. ..$ nCounts_RNA                             : num [1:14783] 12007 8440 8103 8749 4837 ...
##   .. ..$ percent_mito                            : num [1:14783] 0.0115 0.0135 0.0154 0.0118 0.0286 ...
##   .. ..$ tissue_original                         : Factor w/ 1 level "PBMC": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ tissue_ontology_term_id                 : Factor w/ 1 level "UBERON:0000178": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ disease_ontology_term_id                : Factor w/ 1 level "MONDO:0100096": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ donor_id                                : Factor w/ 2 levels "P1","P2": 1 2 1 1 1 1 1 1 2 2 ...
##   .. ..$ development_stage_ontology_term_id      : Factor w/ 2 levels "HsapDv:0000133",..: 1 2 1 1 1 1 1 1 2 2 ...
##   .. ..$ assay_ontology_term_id                  : Factor w/ 1 level "EFO:0009899": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ cell_type_ontology_term_id              : Factor w/ 18 levels "CL:0000037","CL:0000233",..: 10 15 14 15 12 8 15 7 2 15 ...
##   .. ..$ self_reported_ethnicity_ontology_term_id: Factor w/ 1 level "unknown": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ sex_ontology_term_id                    : Factor w/ 1 level "PATO:0000384": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ is_primary_data                         : logi [1:14783] FALSE FALSE FALSE FALSE FALSE FALSE ...
##   .. ..$ organism_ontology_term_id               : Factor w/ 1 level "NCBITaxon:9606": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ suspension_type                         : Factor w/ 1 level "cell": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ tissue_type                             : Factor w/ 1 level "tissue": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ cell_type                               : Factor w/ 18 levels "hematopoietic stem cell",..: 10 15 14 15 12 8 15 7 2 15 ...
##   .. ..$ assay                                   : Factor w/ 1 level "10x 3' v2": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ disease                                 : Factor w/ 1 level "COVID-19": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ organism                                : Factor w/ 1 level "Homo sapiens": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ sex                                     : Factor w/ 1 level "male": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ tissue                                  : Factor w/ 1 level "blood": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ self_reported_ethnicity                 : Factor w/ 1 level "unknown": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..$ development_stage                       : Factor w/ 2 levels "39-year-old human stage",..: 1 2 1 1 1 1 1 1 2 2 ...
##   .. ..$ observation_joinid                      : chr [1:14783] "2P)e%zgsv_" "Lv&N1yD6*0" "DZ>`^5OH2o" "J4$QmqEgvX" ...
##   ..@ active.assay: chr "RNA"
##   ..@ active.ident: Factor w/ 1 level "SeuratProject": 1 1 1 1 1 1 1 1 1 1 ...
##   .. ..- attr(*, "names")= chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   ..@ graphs      : list()
##   ..@ neighbors   : list()
##   ..@ reductions  :List of 3
##   .. ..$ pca :Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. ..@ cell.embeddings           : num [1:14783, 1:50] 24.64 -4.21 -4.19 -2.43 -5.38 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   .. .. .. .. .. ..$ : chr [1:50] "PC_1" "PC_2" "PC_3" "PC_4" ...
##   .. .. .. ..@ feature.loadings          : num[0 , 0 ] 
##   .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. ..@ assay.used                : chr "RNA"
##   .. .. .. ..@ global                    : logi FALSE
##   .. .. .. ..@ stdev                     : num(0) 
##   .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. ..@ misc                      : list()
##   .. .. .. ..@ key                       : chr "PC_"
##   .. ..$ tsne:Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. ..@ cell.embeddings           : num [1:14783, 1:2] 44.59 -5.39 -15.35 11.78 6.39 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   .. .. .. .. .. ..$ : chr [1:2] "tSNE_1" "tSNE_2"
##   .. .. .. ..@ feature.loadings          : num[0 , 0 ] 
##   .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. ..@ assay.used                : chr "RNA"
##   .. .. .. ..@ global                    : logi FALSE
##   .. .. .. ..@ stdev                     : num(0) 
##   .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. ..@ misc                      : list()
##   .. .. .. ..@ key                       : chr "tSNE_"
##   .. ..$ umap:Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. ..@ cell.embeddings           : num [1:14783, 1:2] -9.35 3.04 6.44 5.66 8.58 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:14783] "Guo-AAACCTGAGAGCTTCT-2" "Guo-AAACCTGAGAGGTTGC-7" "Guo-AAACCTGAGATACACA-3" "Guo-AAACCTGAGCGATTCT-1" ...
##   .. .. .. .. .. ..$ : chr [1:2] "UMAP_1" "UMAP_2"
##   .. .. .. ..@ feature.loadings          : num[0 , 0 ] 
##   .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. ..@ assay.used                : chr "RNA"
##   .. .. .. ..@ global                    : logi FALSE
##   .. .. .. ..@ stdev                     : num(0) 
##   .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. ..@ misc                      : list()
##   .. .. .. ..@ key                       : chr "UMAP_"
##   ..@ images      : list()
##   ..@ project.name: chr "SeuratProject"
##   ..@ misc        : list()
##   ..@ version     :Classes 'package_version', 'numeric_version'  hidden list of 1
##   .. ..$ : int [1:3] 5 0 2
##   ..@ commands    : list()
##   ..@ tools       : list()
str(ref)
## Formal class 'Seurat' [package "SeuratObject"] with 13 slots
##   ..@ assays      :List of 2
##   .. ..$ ADT     :Formal class 'Assay' [package "SeuratObject"] with 8 slots
##   .. .. .. ..@ counts       : num[0 , 0 ] 
##   .. .. .. ..@ data         : num [1:228, 1:36433] 0.742 1.113 1.06 2.446 0.815 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:228] "CD39" "Rat-IgG1-1" "CD107a" "CD62P" ...
##   .. .. .. .. .. ..$ : chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   .. .. .. ..@ scale.data   : num[0 , 0 ] 
##   .. .. .. ..@ assay.orig   : NULL
##   .. .. .. ..@ var.features : chr [1:224] "CD80" "CD86" "CD274" "CD273" ...
##   .. .. .. ..@ meta.features:'data.frame':   228 obs. of  0 variables
##   .. .. .. ..@ misc         : Named list()
##   .. .. .. ..@ key          : chr "adt_"
##   .. ..$ refAssay:Formal class 'SCTAssay' [package "Seurat"] with 9 slots
##   .. .. .. ..@ SCTModel.list:List of 1
##   .. .. .. .. ..$ refmodel:Formal class 'SCTModel' [package "Seurat"] with 7 slots
##   .. .. .. .. .. .. ..@ feature.attributes:'data.frame': 16378 obs. of  9 variables:
##   .. .. .. .. .. .. .. ..$ detection_rate       : num [1:16378] 0.00234 0.03178 0.0174 0.00468 0.19053 ...
##   .. .. .. .. .. .. .. ..$ gmean                : num [1:16378] 0.00162 0.02319 0.01227 0.00325 0.15567 ...
##   .. .. .. .. .. .. .. ..$ variance             : num [1:16378] 0.00234 0.03865 0.01809 0.00466 0.25144 ...
##   .. .. .. .. .. .. .. ..$ residual_mean        : num [1:16378] 0.00191 -0.00415 0.00864 0.00552 0.01926 ...
##   .. .. .. .. .. .. .. ..$ residual_variance    : num [1:16378] 0.99 0.93 1.05 1.04 0.97 ...
##   .. .. .. .. .. .. .. ..$ theta                : num [1:16378] 0.0686 0.4304 0.2126 0.0631 1.7654 ...
##   .. .. .. .. .. .. .. ..$ (Intercept)          : num [1:16378] -14 -11.6 -12.3 -14.7 -11 ...
##   .. .. .. .. .. .. .. ..$ log_umi              : num [1:16378] 2.07 2.14 2.14 2.41 2.48 ...
##   .. .. .. .. .. .. .. ..$ genes_log_gmean_step1: int [1:16378] 0 1 1 0 0 0 0 0 0 0 ...
##   .. .. .. .. .. .. ..@ cell.attributes   :'data.frame': 1262 obs. of  3 variables:
##   .. .. .. .. .. .. .. ..$ umi        : num [1:1262] 4389 7759 3821 9595 5962 ...
##   .. .. .. .. .. .. .. ..$ log_umi    : num [1:1262] 3.64 3.89 3.58 3.98 3.78 ...
##   .. .. .. .. .. .. .. ..$ cells_step1: int [1:1262] 1 1 1 1 0 0 0 1 1 1 ...
##   .. .. .. .. .. .. ..@ clips             :List of 2
##   .. .. .. .. .. .. .. ..$ sct: num [1:2] -14.1 14.1
##   .. .. .. .. .. .. .. ..$ vst: num [1:2] -77.3 77.3
##   .. .. .. .. .. .. ..@ umi.assay         : chr "RNA"
##   .. .. .. .. .. .. ..@ model             : chr "y ~ log_umi"
##   .. .. .. .. .. .. ..@ arguments         :List of 19
##   .. .. .. .. .. .. .. ..$ latent_var          : chr "log_umi"
##   .. .. .. .. .. .. .. ..$ n_genes             : num 2000
##   .. .. .. .. .. .. .. ..$ n_cells             : num 5000
##   .. .. .. .. .. .. .. ..$ method              : chr "glmGamPoi"
##   .. .. .. .. .. .. .. ..$ do_regularize       : logi TRUE
##   .. .. .. .. .. .. .. ..$ theta_regularization: chr "od_factor"
##   .. .. .. .. .. .. .. ..$ res_clip_range      : num [1:2] -77.3 77.3
##   .. .. .. .. .. .. .. ..$ bin_size            : num 500
##   .. .. .. .. .. .. .. ..$ min_cells           : num 5
##   .. .. .. .. .. .. .. ..$ residual_type       : chr "pearson"
##   .. .. .. .. .. .. .. ..$ return_cell_attr    : logi TRUE
##   .. .. .. .. .. .. .. ..$ return_gene_attr    : logi TRUE
##   .. .. .. .. .. .. .. ..$ return_corrected_umi: logi TRUE
##   .. .. .. .. .. .. .. ..$ min_variance        : num -Inf
##   .. .. .. .. .. .. .. ..$ bw_adjust           : num 3
##   .. .. .. .. .. .. .. ..$ gmean_eps           : num 1
##   .. .. .. .. .. .. .. ..$ theta_estimation_fun: chr "theta.ml"
##   .. .. .. .. .. .. .. ..$ verbosity           : num 2
##   .. .. .. .. .. .. .. ..$ sct.clip.range      : num [1:2] -14.1 14.1
##   .. .. .. .. .. .. ..@ NA                : NULL
##   .. .. .. ..@ counts       : num[0 , 0 ] 
##   .. .. .. ..@ data         :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
##   .. .. .. .. .. ..@ i       : int(0) 
##   .. .. .. .. .. ..@ p       : int [1:36434] 0 0 0 0 0 0 0 0 0 0 ...
##   .. .. .. .. .. ..@ Dim     : int [1:2] 5000 36433
##   .. .. .. .. .. ..@ Dimnames:List of 2
##   .. .. .. .. .. .. ..$ : chr [1:5000] "S100A9" "GNLY" "S100A8" "LYZ" ...
##   .. .. .. .. .. .. ..$ : chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   .. .. .. .. .. ..@ x       : num(0) 
##   .. .. .. .. .. ..@ factors : list()
##   .. .. .. ..@ scale.data   : num[0 , 0 ] 
##   .. .. .. ..@ assay.orig   : NULL
##   .. .. .. ..@ var.features : logi(0) 
##   .. .. .. ..@ meta.features:'data.frame':   5000 obs. of  0 variables
##   .. .. .. ..@ misc         : list()
##   .. .. .. ..@ key          : chr "refassay_"
##   ..@ meta.data   :'data.frame': 36433 obs. of  6 variables:
##   .. ..$ celltype.l1      : Factor w/ 8 levels "B","CD4 T","CD8 T",..: 8 3 3 8 1 2 1 3 2 4 ...
##   .. ..$ celltype.l2      : Factor w/ 30 levels "ASDC","B intermediate",..: 20 15 14 18 2 10 2 15 10 27 ...
##   .. ..$ celltype.l3      : Factor w/ 57 levels "ASDC_mDC","ASDC_pDC",..: 41 28 24 37 4 16 3 27 14 52 ...
##   .. ..$ ori.index        : int [1:36433] 27 30 35 40 42 46 47 61 62 63 ...
##   .. ..$ nCount_refAssay  : num [1:36433] 0 0 0 0 0 0 0 0 0 0 ...
##   .. ..$ nFeature_refAssay: int [1:36433] 0 0 0 0 0 0 0 0 0 0 ...
##   ..@ active.assay: chr "refAssay"
##   ..@ active.ident: Factor w/ 57 levels "CD14 Mono","CD4 TCM_1",..: 15 14 17 18 7 11 19 5 2 21 ...
##   .. ..- attr(*, "names")= chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   ..@ graphs      : list()
##   ..@ neighbors   :List of 1
##   .. ..$ refdr.annoy.neighbors:Formal class 'Neighbor' [package "SeuratObject"] with 5 slots
##   .. .. .. ..@ nn.idx    : num [1:36433, 1:31] 1 2 3 4 5 6 7 8 9 10 ...
##   .. .. .. ..@ nn.dist   : num [1:36433, 1:31] 0 0 0 0 0 0 0 0 0 0 ...
##   .. .. .. ..@ alg.idx   :Reference class 'Rcpp_AnnoyAngular' [package "RcppAnnoy"] with 0 fields
##  list()
##   .. .. .. .. ..and 33 methods, of which 19 are  possibly relevant:
##   .. .. .. .. ..  addItem, build, finalize, getDistance, getItemsVector,
##   .. .. .. .. ..  getNItems, getNNsByItem, getNNsByItemList, getNNsByVector,
##   .. .. .. .. ..  getNNsByVectorList, getNTrees, initialize, load, onDiskBuild,
##   .. .. .. .. ..  save, setSeed, setVerbose, unbuild, unload
##   .. .. .. ..@ alg.info  :List of 2
##   .. .. .. .. ..$ metric: chr "cosine"
##   .. .. .. .. ..$ ndim  : int 50
##   .. .. .. ..@ cell.names: chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   ..@ reductions  :List of 2
##   .. ..$ refUMAP:Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. ..@ cell.embeddings           : num [1:36433, 1:2] 8.62 4.9 8.43 9.33 -7.33 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   .. .. .. .. .. ..$ : chr [1:2] "refumap_1" "refumap_2"
##   .. .. .. ..@ feature.loadings          : num[0 , 0 ] 
##   .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. ..@ assay.used                : chr "SCT"
##   .. .. .. ..@ global                    : logi TRUE
##   .. .. .. ..@ stdev                     : num(0) 
##   .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. ..@ misc                      :List of 1
##   .. .. .. .. ..$ model:List of 16
##   .. .. .. .. .. ..$ embedding           : num [1:161764, 1:2] -9.94 5.29 11.91 2.37 12.37 ...
##   .. .. .. .. .. ..$ n_neighbors         : num 15
##   .. .. .. .. .. ..$ search_k            : num 1500
##   .. .. .. .. .. ..$ local_connectivity  : int 1
##   .. .. .. .. .. ..$ n_epochs            : num 200
##   .. .. .. .. .. ..$ alpha               : num 1
##   .. .. .. .. .. ..$ negative_sample_rate: int 5
##   .. .. .. .. .. ..$ method              : chr "umap"
##   .. .. .. .. .. ..$ a                   : num 0.992
##   .. .. .. .. .. ..$ b                   : num 1.11
##   .. .. .. .. .. ..$ gamma               : num 1
##   .. .. .. .. .. ..$ approx_pow          : int 0
##   .. .. .. .. .. ..$ metric              :List of 1
##   .. .. .. .. .. .. ..$ cosine: Named list()
##   .. .. .. .. .. ..$ pcg_rand            : int 1
##   .. .. .. .. .. ..$ pca_models          : Named list()
##   .. .. .. .. .. ..$ num_precomputed_nns : num 1
##   .. .. .. ..@ key                       : chr "refumap_"
##   .. ..$ refDR  :Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. ..@ cell.embeddings           : num [1:36433, 1:50] -20.9 -20.9 -22.6 -17.8 -13.7 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:36433] "L1_AAACGAATCCTCACCA" "L1_AAACGCTAGAGCATTA" "L1_AAACGCTCAACGATCT" "L1_AAACGCTGTGCTCGTG" ...
##   .. .. .. .. .. ..$ : chr [1:50] "refdr_1" "refdr_2" "refdr_3" "refdr_4" ...
##   .. .. .. ..@ feature.loadings          : num [1:5000, 1:50] 0.1754 -0.0565 0.1527 0.2007 -0.0196 ...
##   .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. ..$ : chr [1:5000] "S100A9" "GNLY" "S100A8" "LYZ" ...
##   .. .. .. .. .. ..$ : chr [1:50] "refdr_1" "refdr_2" "refdr_3" "refdr_4" ...
##   .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. ..@ assay.used                : chr "refAssay"
##   .. .. .. ..@ global                    : logi TRUE
##   .. .. .. ..@ stdev                     : num [1:50] 21537618 7516787 6242424 4581943 2722401 ...
##   .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. ..@ misc                      : Named list()
##   .. .. .. ..@ key                       : chr "refdr_"
##   ..@ images      : list()
##   ..@ project.name: chr "SeuratProject"
##   ..@ misc        : list()
##   ..@ version     :Classes 'package_version', 'numeric_version'  hidden list of 1
##   .. ..$ : int [1:4] 3 1 5 9006
##   ..@ commands    :List of 1
##   .. ..$ NormalizeData.ADT:Formal class 'SeuratCommand' [package "SeuratObject"] with 5 slots
##   .. .. .. ..@ name       : chr "NormalizeData.ADT"
##   .. .. .. ..@ time.stamp : POSIXct[1:1], format: "2021-01-25 23:05:52"
##   .. .. .. ..@ assay.used : chr "ADT"
##   .. .. .. ..@ call.string: chr "NormalizeData(pbmc, normalization.method = \"CLR\", margin = 2)"
##   .. .. .. ..@ params     :List of 5
##   .. .. .. .. ..$ assay               : chr "ADT"
##   .. .. .. .. ..$ normalization.method: chr "CLR"
##   .. .. .. .. ..$ scale.factor        : num 10000
##   .. .. .. .. ..$ margin              : num 2
##   .. .. .. .. ..$ verbose             : logi TRUE
##   ..@ tools       :List of 1
##   .. ..$ AzimuthReference:Formal class 'AzimuthData' [package "Azimuth"] with 5 slots
##   .. .. .. ..@ plotref          :Formal class 'DimReduc' [package "SeuratObject"] with 9 slots
##   .. .. .. .. .. ..@ cell.embeddings           : num [1:24760, 1:2] -7.33 7.7 6.37 4.24 7.57 ...
##   .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
##   .. .. .. .. .. .. .. ..$ : chr [1:24760] "L1_AAACCCACATGGATCT" "L1_AAACGAAAGTTGAATG" "L1_AAACGAACAATGAGCG" "L1_AAACGAAGTATTCTCT" ...
##   .. .. .. .. .. .. .. ..$ : chr [1:2] "WUMAP_1" "WUMAP_2"
##   .. .. .. .. .. ..@ feature.loadings          : num[0 , 0 ] 
##   .. .. .. .. .. ..@ feature.loadings.projected: num[0 , 0 ] 
##   .. .. .. .. .. ..@ assay.used                : chr "SCT"
##   .. .. .. .. .. ..@ global                    : logi TRUE
##   .. .. .. .. .. ..@ stdev                     : num(0) 
##   .. .. .. .. .. ..@ jackstraw                 :Formal class 'JackStrawData' [package "SeuratObject"] with 4 slots
##   .. .. .. .. .. .. .. ..@ empirical.p.values     : num[0 , 0 ] 
##   .. .. .. .. .. .. .. ..@ fake.reduction.scores  : num[0 , 0 ] 
##   .. .. .. .. .. .. .. ..@ empirical.p.values.full: num[0 , 0 ] 
##   .. .. .. .. .. .. .. ..@ overall.p.values       : num[0 , 0 ] 
##   .. .. .. .. .. ..@ misc                      :List of 2
##   .. .. .. .. .. .. ..$ model        :List of 15
##   .. .. .. .. .. .. .. ..$ embedding           : num [1:161764, 1:2] -9.94 5.29 11.91 2.37 12.37 ...
##   .. .. .. .. .. .. .. ..$ n_neighbors         : num 15
##   .. .. .. .. .. .. .. ..$ search_k            : num 1500
##   .. .. .. .. .. .. .. ..$ local_connectivity  : int 1
##   .. .. .. .. .. .. .. ..$ n_epochs            : num 200
##   .. .. .. .. .. .. .. ..$ alpha               : num 1
##   .. .. .. .. .. .. .. ..$ negative_sample_rate: int 5
##   .. .. .. .. .. .. .. ..$ method              : chr "umap"
##   .. .. .. .. .. .. .. ..$ a                   : num 0.992
##   .. .. .. .. .. .. .. ..$ b                   : num 1.11
##   .. .. .. .. .. .. .. ..$ gamma               : num 1
##   .. .. .. .. .. .. .. ..$ approx_pow          : int 0
##   .. .. .. .. .. .. .. ..$ metric              :List of 1
##   .. .. .. .. .. .. .. .. ..$ cosine: Named list()
##   .. .. .. .. .. .. .. ..$ pcg_rand            : int 1
##   .. .. .. .. .. .. .. ..$ pca_models          : Named list()
##   .. .. .. .. .. .. ..$ plot.metadata:'data.frame':  24760 obs. of  3 variables:
##   .. .. .. .. .. .. .. ..$ celltype.l1: Factor w/ 8 levels "Mono","CD4 T",..: 5 6 2 2 2 2 6 5 6 3 ...
##   .. .. .. .. .. .. .. ..$ celltype.l2: Factor w/ 30 levels "ASDC","B intermediate",..: 2 23 10 10 8 8 18 2 23 13 ...
##   .. .. .. .. .. .. .. ..$ celltype.l3: Factor w/ 57 levels "B intermediate lambda",..: 1 2 3 4 5 5 6 1 2 7 ...
##   .. .. .. .. .. ..@ key                       : chr "WUMAP_"
##   .. .. .. ..@ colormap         :List of 3
##   .. .. .. .. ..$ celltype.l1: Named chr [1:8] "#F8766D" "#CD9600" "#7CAE00" "#00BE67" ...
##   .. .. .. .. .. ..- attr(*, "names")= chr [1:8] "Mono" "CD4 T" "CD8 T" "NK" ...
##   .. .. .. .. ..$ celltype.l2: Named chr [1:30] "#8AAB00" "#C99800" "#00BA38" "#FF6C91" ...
##   .. .. .. .. .. ..- attr(*, "names")= chr [1:30] "ASDC" "B intermediate" "B memory" "B naive" ...
##   .. .. .. .. ..$ celltype.l3: Named chr [1:57] "#F8766D" "#F47B5B" "#EF7F47" "#E9842C" ...
##   .. .. .. .. .. ..- attr(*, "names")= chr [1:57] "B intermediate lambda" "MAIT" "CD4 TCM_2" "CD4 TCM_3" ...
##   .. .. .. ..@ seurat.version   :Classes 'package_version', 'numeric_version'  hidden list of 1
##   .. .. .. .. ..$ : int [1:3] 4 0 0
##   .. .. .. ..@ azimuth.version  :Classes 'package_version', 'numeric_version'  hidden list of 1
##   .. .. .. .. ..$ : int [1:4] 0 2 0 9015
##   .. .. .. ..@ reference.version: chr "1.0.0"
# Check meta.data
head(query@meta.data)
##                           orig.ident nCount_RNA nFeature_RNA disease stage
## Guo-AAACCTGAGAGCTTCT-2 SeuratProject       4332         1407        severe
## Guo-AAACCTGAGAGGTTGC-7 SeuratProject       2220          903     remission
## Guo-AAACCTGAGATACACA-3 SeuratProject       2493          877     remission
## Guo-AAACCTGAGCGATTCT-1 SeuratProject       2159          933        severe
## Guo-AAACCTGAGTGAAGAG-3 SeuratProject       1067          467     remission
## Guo-AAACCTGAGTTGAGTA-2 SeuratProject       1905          744        severe
##                                          treatment timepoint
## Guo-AAACCTGAGAGCTTCT-2 400 mg Tocilizumab at day 1     day 1
## Guo-AAACCTGAGAGGTTGC-7 400 mg Tocilizumab at day 1     day 7
## Guo-AAACCTGAGATACACA-3 400 mg Tocilizumab at day 1     day 5
## Guo-AAACCTGAGCGATTCT-1 400 mg Tocilizumab at day 1     day 1
## Guo-AAACCTGAGTGAAGAG-3 400 mg Tocilizumab at day 1     day 5
## Guo-AAACCTGAGTTGAGTA-2 400 mg Tocilizumab at day 1     day 1
##                                                Dataset           sample
## Guo-AAACCTGAGAGCTTCT-2 Guo et al._Nature Communication Guo_P1-day1-rep2
## Guo-AAACCTGAGAGGTTGC-7 Guo et al._Nature Communication      Guo_P2-day7
## Guo-AAACCTGAGATACACA-3 Guo et al._Nature Communication Guo_P1-day5-rep1
## Guo-AAACCTGAGCGATTCT-1 Guo et al._Nature Communication Guo_P1-day1-rep1
## Guo-AAACCTGAGTGAAGAG-3 Guo et al._Nature Communication Guo_P1-day5-rep1
## Guo-AAACCTGAGTTGAGTA-2 Guo et al._Nature Communication Guo_P1-day1-rep2
##                               disease_original                 disease_general
## Guo-AAACCTGAGAGCTTCT-2         COVID-19 Severe COVID-19 Severe/Late stage/Vent
## Guo-AAACCTGAGAGGTTGC-7 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGATACACA-3 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGCGATTCT-1         COVID-19 Severe COVID-19 Severe/Late stage/Vent
## Guo-AAACCTGAGTGAAGAG-3 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGTTGAGTA-2         COVID-19 Severe COVID-19 Severe/Late stage/Vent
##                        COVID-19 Condition       Lineage     Cell.group
## Guo-AAACCTGAGAGCTTCT-2             severe       Myeloid CD14+ Monocyte
## Guo-AAACCTGAGAGGTTGC-7          remission Lymphoid_T/NK    CD8+ T cell
## Guo-AAACCTGAGATACACA-3          remission Lymphoid_T/NK    CD4+ T cell
## Guo-AAACCTGAGCGATTCT-1             severe Lymphoid_T/NK    CD8+ T cell
## Guo-AAACCTGAGTGAAGAG-3          remission Lymphoid_T/NK    CD4+ T cell
## Guo-AAACCTGAGTTGAGTA-2             severe    Lymphoid_B         B cell
##                        Cell.class_reannotated nFeaturess_RNA nCounts_RNA
## Guo-AAACCTGAGAGCTTCT-2     Classical Monocyte           1410   12006.946
## Guo-AAACCTGAGAGGTTGC-7               CD8+ Tem            904    8439.710
## Guo-AAACCTGAGATACACA-3               CD4+ Tcm            877    8103.279
## Guo-AAACCTGAGCGATTCT-1               CD8+ Tem            933    8748.600
## Guo-AAACCTGAGTGAAGAG-3           CD4+ T naive            468    4836.542
## Guo-AAACCTGAGTTGAGTA-2                B naive            744    7164.143
##                        percent_mito tissue_original tissue_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2   0.01152303            PBMC          UBERON:0000178
## Guo-AAACCTGAGAGGTTGC-7   0.01349096            PBMC          UBERON:0000178
## Guo-AAACCTGAGATACACA-3   0.01543431            PBMC          UBERON:0000178
## Guo-AAACCTGAGCGATTCT-1   0.01182754            PBMC          UBERON:0000178
## Guo-AAACCTGAGTGAAGAG-3   0.02864259            PBMC          UBERON:0000178
## Guo-AAACCTGAGTTGAGTA-2   0.01400229            PBMC          UBERON:0000178
##                        disease_ontology_term_id donor_id
## Guo-AAACCTGAGAGCTTCT-2            MONDO:0100096       P1
## Guo-AAACCTGAGAGGTTGC-7            MONDO:0100096       P2
## Guo-AAACCTGAGATACACA-3            MONDO:0100096       P1
## Guo-AAACCTGAGCGATTCT-1            MONDO:0100096       P1
## Guo-AAACCTGAGTGAAGAG-3            MONDO:0100096       P1
## Guo-AAACCTGAGTTGAGTA-2            MONDO:0100096       P1
##                        development_stage_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2                     HsapDv:0000133
## Guo-AAACCTGAGAGGTTGC-7                     HsapDv:0000172
## Guo-AAACCTGAGATACACA-3                     HsapDv:0000133
## Guo-AAACCTGAGCGATTCT-1                     HsapDv:0000133
## Guo-AAACCTGAGTGAAGAG-3                     HsapDv:0000133
## Guo-AAACCTGAGTTGAGTA-2                     HsapDv:0000133
##                        assay_ontology_term_id cell_type_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2            EFO:0009899                 CL:0000860
## Guo-AAACCTGAGAGGTTGC-7            EFO:0009899                 CL:0000913
## Guo-AAACCTGAGATACACA-3            EFO:0009899                 CL:0000904
## Guo-AAACCTGAGCGATTCT-1            EFO:0009899                 CL:0000913
## Guo-AAACCTGAGTGAAGAG-3            EFO:0009899                 CL:0000895
## Guo-AAACCTGAGTTGAGTA-2            EFO:0009899                 CL:0000788
##                        self_reported_ethnicity_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2                                  unknown
## Guo-AAACCTGAGAGGTTGC-7                                  unknown
## Guo-AAACCTGAGATACACA-3                                  unknown
## Guo-AAACCTGAGCGATTCT-1                                  unknown
## Guo-AAACCTGAGTGAAGAG-3                                  unknown
## Guo-AAACCTGAGTTGAGTA-2                                  unknown
##                        sex_ontology_term_id is_primary_data
## Guo-AAACCTGAGAGCTTCT-2         PATO:0000384           FALSE
## Guo-AAACCTGAGAGGTTGC-7         PATO:0000384           FALSE
## Guo-AAACCTGAGATACACA-3         PATO:0000384           FALSE
## Guo-AAACCTGAGCGATTCT-1         PATO:0000384           FALSE
## Guo-AAACCTGAGTGAAGAG-3         PATO:0000384           FALSE
## Guo-AAACCTGAGTTGAGTA-2         PATO:0000384           FALSE
##                        organism_ontology_term_id suspension_type tissue_type
## Guo-AAACCTGAGAGCTTCT-2            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGAGGTTGC-7            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGATACACA-3            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGCGATTCT-1            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGTGAAGAG-3            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGTTGAGTA-2            NCBITaxon:9606            cell      tissue
##                                                                   cell_type
## Guo-AAACCTGAGAGCTTCT-2                                   classical monocyte
## Guo-AAACCTGAGAGGTTGC-7      effector memory CD8-positive, alpha-beta T cell
## Guo-AAACCTGAGATACACA-3       central memory CD4-positive, alpha-beta T cell
## Guo-AAACCTGAGCGATTCT-1      effector memory CD8-positive, alpha-beta T cell
## Guo-AAACCTGAGTGAAGAG-3 naive thymus-derived CD4-positive, alpha-beta T cell
## Guo-AAACCTGAGTTGAGTA-2                                         naive B cell
##                            assay  disease     organism  sex tissue
## Guo-AAACCTGAGAGCTTCT-2 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGAGGTTGC-7 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGATACACA-3 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGCGATTCT-1 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGTGAAGAG-3 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGTTGAGTA-2 10x 3' v2 COVID-19 Homo sapiens male  blood
##                        self_reported_ethnicity       development_stage
## Guo-AAACCTGAGAGCTTCT-2                 unknown 39-year-old human stage
## Guo-AAACCTGAGAGGTTGC-7                 unknown 78-year-old human stage
## Guo-AAACCTGAGATACACA-3                 unknown 39-year-old human stage
## Guo-AAACCTGAGCGATTCT-1                 unknown 39-year-old human stage
## Guo-AAACCTGAGTGAAGAG-3                 unknown 39-year-old human stage
## Guo-AAACCTGAGTTGAGTA-2                 unknown 39-year-old human stage
##                        observation_joinid
## Guo-AAACCTGAGAGCTTCT-2         2P)e%zgsv_
## Guo-AAACCTGAGAGGTTGC-7         Lv&N1yD6*0
## Guo-AAACCTGAGATACACA-3         DZ>`^5OH2o
## Guo-AAACCTGAGCGATTCT-1         J4$QmqEgvX
## Guo-AAACCTGAGTGAAGAG-3         Y&7u#&E`-T
## Guo-AAACCTGAGTTGAGTA-2         XQ2XgsY|}S
head(ref@meta.data)
##                     celltype.l1    celltype.l2           celltype.l3 ori.index
## L1_AAACGAATCCTCACCA     other T            gdT                 gdT_3        27
## L1_AAACGCTAGAGCATTA       CD8 T        CD8 TEM             CD8 TEM_2        30
## L1_AAACGCTCAACGATCT       CD8 T        CD8 TCM             CD8 TCM_1        35
## L1_AAACGCTGTGCTCGTG     other T            dnT                 dnT_2        40
## L1_AAACGCTTCTTGGTCC           B B intermediate B intermediate lambda        42
## L1_AAAGAACCAAGCGGAT       CD4 T        CD4 TCM             CD4 TCM_3        46
##                     nCount_refAssay nFeature_refAssay
## L1_AAACGAATCCTCACCA               0                 0
## L1_AAACGCTAGAGCATTA               0                 0
## L1_AAACGCTCAACGATCT               0                 0
## L1_AAACGCTGTGCTCGTG               0                 0
## L1_AAACGCTTCTTGGTCC               0                 0
## L1_AAAGAACCAAGCGGAT               0                 0
# Check how different cell types are in the reference 
table(ref$celltype.l1)
## 
##       B   CD4 T   CD8 T      DC    Mono      NK   other other T 
##    2698   17646    5858     922    4564    2051    1078    1616
table(ref$celltype.l2)
## 
##              ASDC    B intermediate          B memory           B naive 
##                16               899               597               903 
##         CD14 Mono         CD16 Mono           CD4 CTL         CD4 Naive 
##              3673               891               296              1403 
## CD4 Proliferating           CD4 TCM           CD4 TEM         CD8 Naive 
##                57             14889               703              1148 
## CD8 Proliferating           CD8 TCM           CD8 TEM              cDC1 
##                31              2883              1796               150 
##              cDC2               dnT             Eryth               gdT 
##               472               181                81               835 
##              HSPC               ILC              MAIT                NK 
##               300               131               600              1546 
##  NK Proliferating     NK_CD56bright               pDC       Plasmablast 
##               214               291               284               299 
##          Platelet              Treg 
##               566               298
# Check no. of genes 
nrow(query)
## [1] 17374
nrow(ref)
## [1] 5000
# Check no. of cells 
ncol(query)
## [1] 14783
ncol(ref)
## [1] 36433






(2) DimRed viz

(10 min)

AIM: Visualize data in the low dimensional space highlighting the different categorical variables of interest.


Check the metadata of query and reference objects and choose the most interesting categorical variables to highlight into UMAP.

## Dimensional reduction - visualization

## Reference 
head(ref@meta.data)
##                     celltype.l1    celltype.l2           celltype.l3 ori.index
## L1_AAACGAATCCTCACCA     other T            gdT                 gdT_3        27
## L1_AAACGCTAGAGCATTA       CD8 T        CD8 TEM             CD8 TEM_2        30
## L1_AAACGCTCAACGATCT       CD8 T        CD8 TCM             CD8 TCM_1        35
## L1_AAACGCTGTGCTCGTG     other T            dnT                 dnT_2        40
## L1_AAACGCTTCTTGGTCC           B B intermediate B intermediate lambda        42
## L1_AAAGAACCAAGCGGAT       CD4 T        CD4 TCM             CD4 TCM_3        46
##                     nCount_refAssay nFeature_refAssay
## L1_AAACGAATCCTCACCA               0                 0
## L1_AAACGCTAGAGCATTA               0                 0
## L1_AAACGCTCAACGATCT               0                 0
## L1_AAACGCTGTGCTCGTG               0                 0
## L1_AAACGCTTCTTGGTCC               0                 0
## L1_AAAGAACCAAGCGGAT               0                 0
ref.vars <- c("celltype.l1", "celltype.l2")
ref.umap.plts <- lapply(X = ref.vars, function(x) {
  DimPlot(object = ref, reduction = "refUMAP", group.by = x, pt.size = 0.1, label = TRUE)
})

## Query
colnames(query@meta.data)[1] <- "disease_stage"
head(query@meta.data)
##                        disease_stage nCount_RNA nFeature_RNA disease stage
## Guo-AAACCTGAGAGCTTCT-2 SeuratProject       4332         1407        severe
## Guo-AAACCTGAGAGGTTGC-7 SeuratProject       2220          903     remission
## Guo-AAACCTGAGATACACA-3 SeuratProject       2493          877     remission
## Guo-AAACCTGAGCGATTCT-1 SeuratProject       2159          933        severe
## Guo-AAACCTGAGTGAAGAG-3 SeuratProject       1067          467     remission
## Guo-AAACCTGAGTTGAGTA-2 SeuratProject       1905          744        severe
##                                          treatment timepoint
## Guo-AAACCTGAGAGCTTCT-2 400 mg Tocilizumab at day 1     day 1
## Guo-AAACCTGAGAGGTTGC-7 400 mg Tocilizumab at day 1     day 7
## Guo-AAACCTGAGATACACA-3 400 mg Tocilizumab at day 1     day 5
## Guo-AAACCTGAGCGATTCT-1 400 mg Tocilizumab at day 1     day 1
## Guo-AAACCTGAGTGAAGAG-3 400 mg Tocilizumab at day 1     day 5
## Guo-AAACCTGAGTTGAGTA-2 400 mg Tocilizumab at day 1     day 1
##                                                Dataset           sample
## Guo-AAACCTGAGAGCTTCT-2 Guo et al._Nature Communication Guo_P1-day1-rep2
## Guo-AAACCTGAGAGGTTGC-7 Guo et al._Nature Communication      Guo_P2-day7
## Guo-AAACCTGAGATACACA-3 Guo et al._Nature Communication Guo_P1-day5-rep1
## Guo-AAACCTGAGCGATTCT-1 Guo et al._Nature Communication Guo_P1-day1-rep1
## Guo-AAACCTGAGTGAAGAG-3 Guo et al._Nature Communication Guo_P1-day5-rep1
## Guo-AAACCTGAGTTGAGTA-2 Guo et al._Nature Communication Guo_P1-day1-rep2
##                               disease_original                 disease_general
## Guo-AAACCTGAGAGCTTCT-2         COVID-19 Severe COVID-19 Severe/Late stage/Vent
## Guo-AAACCTGAGAGGTTGC-7 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGATACACA-3 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGCGATTCT-1         COVID-19 Severe COVID-19 Severe/Late stage/Vent
## Guo-AAACCTGAGTGAAGAG-3 COVID-19 Mild/Remission              COVID-19 Remission
## Guo-AAACCTGAGTTGAGTA-2         COVID-19 Severe COVID-19 Severe/Late stage/Vent
##                        COVID-19 Condition       Lineage     Cell.group
## Guo-AAACCTGAGAGCTTCT-2             severe       Myeloid CD14+ Monocyte
## Guo-AAACCTGAGAGGTTGC-7          remission Lymphoid_T/NK    CD8+ T cell
## Guo-AAACCTGAGATACACA-3          remission Lymphoid_T/NK    CD4+ T cell
## Guo-AAACCTGAGCGATTCT-1             severe Lymphoid_T/NK    CD8+ T cell
## Guo-AAACCTGAGTGAAGAG-3          remission Lymphoid_T/NK    CD4+ T cell
## Guo-AAACCTGAGTTGAGTA-2             severe    Lymphoid_B         B cell
##                        Cell.class_reannotated nFeaturess_RNA nCounts_RNA
## Guo-AAACCTGAGAGCTTCT-2     Classical Monocyte           1410   12006.946
## Guo-AAACCTGAGAGGTTGC-7               CD8+ Tem            904    8439.710
## Guo-AAACCTGAGATACACA-3               CD4+ Tcm            877    8103.279
## Guo-AAACCTGAGCGATTCT-1               CD8+ Tem            933    8748.600
## Guo-AAACCTGAGTGAAGAG-3           CD4+ T naive            468    4836.542
## Guo-AAACCTGAGTTGAGTA-2                B naive            744    7164.143
##                        percent_mito tissue_original tissue_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2   0.01152303            PBMC          UBERON:0000178
## Guo-AAACCTGAGAGGTTGC-7   0.01349096            PBMC          UBERON:0000178
## Guo-AAACCTGAGATACACA-3   0.01543431            PBMC          UBERON:0000178
## Guo-AAACCTGAGCGATTCT-1   0.01182754            PBMC          UBERON:0000178
## Guo-AAACCTGAGTGAAGAG-3   0.02864259            PBMC          UBERON:0000178
## Guo-AAACCTGAGTTGAGTA-2   0.01400229            PBMC          UBERON:0000178
##                        disease_ontology_term_id donor_id
## Guo-AAACCTGAGAGCTTCT-2            MONDO:0100096       P1
## Guo-AAACCTGAGAGGTTGC-7            MONDO:0100096       P2
## Guo-AAACCTGAGATACACA-3            MONDO:0100096       P1
## Guo-AAACCTGAGCGATTCT-1            MONDO:0100096       P1
## Guo-AAACCTGAGTGAAGAG-3            MONDO:0100096       P1
## Guo-AAACCTGAGTTGAGTA-2            MONDO:0100096       P1
##                        development_stage_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2                     HsapDv:0000133
## Guo-AAACCTGAGAGGTTGC-7                     HsapDv:0000172
## Guo-AAACCTGAGATACACA-3                     HsapDv:0000133
## Guo-AAACCTGAGCGATTCT-1                     HsapDv:0000133
## Guo-AAACCTGAGTGAAGAG-3                     HsapDv:0000133
## Guo-AAACCTGAGTTGAGTA-2                     HsapDv:0000133
##                        assay_ontology_term_id cell_type_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2            EFO:0009899                 CL:0000860
## Guo-AAACCTGAGAGGTTGC-7            EFO:0009899                 CL:0000913
## Guo-AAACCTGAGATACACA-3            EFO:0009899                 CL:0000904
## Guo-AAACCTGAGCGATTCT-1            EFO:0009899                 CL:0000913
## Guo-AAACCTGAGTGAAGAG-3            EFO:0009899                 CL:0000895
## Guo-AAACCTGAGTTGAGTA-2            EFO:0009899                 CL:0000788
##                        self_reported_ethnicity_ontology_term_id
## Guo-AAACCTGAGAGCTTCT-2                                  unknown
## Guo-AAACCTGAGAGGTTGC-7                                  unknown
## Guo-AAACCTGAGATACACA-3                                  unknown
## Guo-AAACCTGAGCGATTCT-1                                  unknown
## Guo-AAACCTGAGTGAAGAG-3                                  unknown
## Guo-AAACCTGAGTTGAGTA-2                                  unknown
##                        sex_ontology_term_id is_primary_data
## Guo-AAACCTGAGAGCTTCT-2         PATO:0000384           FALSE
## Guo-AAACCTGAGAGGTTGC-7         PATO:0000384           FALSE
## Guo-AAACCTGAGATACACA-3         PATO:0000384           FALSE
## Guo-AAACCTGAGCGATTCT-1         PATO:0000384           FALSE
## Guo-AAACCTGAGTGAAGAG-3         PATO:0000384           FALSE
## Guo-AAACCTGAGTTGAGTA-2         PATO:0000384           FALSE
##                        organism_ontology_term_id suspension_type tissue_type
## Guo-AAACCTGAGAGCTTCT-2            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGAGGTTGC-7            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGATACACA-3            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGCGATTCT-1            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGTGAAGAG-3            NCBITaxon:9606            cell      tissue
## Guo-AAACCTGAGTTGAGTA-2            NCBITaxon:9606            cell      tissue
##                                                                   cell_type
## Guo-AAACCTGAGAGCTTCT-2                                   classical monocyte
## Guo-AAACCTGAGAGGTTGC-7      effector memory CD8-positive, alpha-beta T cell
## Guo-AAACCTGAGATACACA-3       central memory CD4-positive, alpha-beta T cell
## Guo-AAACCTGAGCGATTCT-1      effector memory CD8-positive, alpha-beta T cell
## Guo-AAACCTGAGTGAAGAG-3 naive thymus-derived CD4-positive, alpha-beta T cell
## Guo-AAACCTGAGTTGAGTA-2                                         naive B cell
##                            assay  disease     organism  sex tissue
## Guo-AAACCTGAGAGCTTCT-2 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGAGGTTGC-7 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGATACACA-3 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGCGATTCT-1 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGTGAAGAG-3 10x 3' v2 COVID-19 Homo sapiens male  blood
## Guo-AAACCTGAGTTGAGTA-2 10x 3' v2 COVID-19 Homo sapiens male  blood
##                        self_reported_ethnicity       development_stage
## Guo-AAACCTGAGAGCTTCT-2                 unknown 39-year-old human stage
## Guo-AAACCTGAGAGGTTGC-7                 unknown 78-year-old human stage
## Guo-AAACCTGAGATACACA-3                 unknown 39-year-old human stage
## Guo-AAACCTGAGCGATTCT-1                 unknown 39-year-old human stage
## Guo-AAACCTGAGTGAAGAG-3                 unknown 39-year-old human stage
## Guo-AAACCTGAGTTGAGTA-2                 unknown 39-year-old human stage
##                        observation_joinid
## Guo-AAACCTGAGAGCTTCT-2         2P)e%zgsv_
## Guo-AAACCTGAGAGGTTGC-7         Lv&N1yD6*0
## Guo-AAACCTGAGATACACA-3         DZ>`^5OH2o
## Guo-AAACCTGAGCGATTCT-1         J4$QmqEgvX
## Guo-AAACCTGAGTGAAGAG-3         Y&7u#&E`-T
## Guo-AAACCTGAGTTGAGTA-2         XQ2XgsY|}S
query.vars <- c("disease_stage", "donor_id", "timepoint", "Cell.group", "Cell.class_reannotated")
query.umap.plts <- lapply(X = query.vars, function(x) {
  DimPlot(object = query, reduction = "umap", group.by = x, pt.size = 0.1, label = TRUE)
})

Plot the categorical variables celltype.l1 and celltype.l2 for the reference below.

## Plot dimensional reductions for reference
(ref.umap.plts[[1]] + NoLegend()) + (ref.umap.plts[[2]] + NoLegend()) 


Plot the categorical variables disease_stage, donor_id, timepoint, sex, Cell.group, Cell.class_reannotated for the query below.

## Plot dimensional reductions for reference
(query.umap.plts[[1]]) + (query.umap.plts[[2]]) + (query.umap.plts[[3]]) 

## Plot dimensional reductions for reference
(query.umap.plts[[4]] + NoLegend()) + (query.umap.plts[[5]] + NoLegend()) 






(3) Reference-mapping

(10 min)

AIM: Annotate and project the query against the reference data set.


Perform reference-mapping below by identifying anchors between the COVID versus healthy PBMCs data sets and transferring the labels of interest (celltype.l1, celltype.l2) from the previously annotated healthy data set into the query COVID data set with the functions FindTransferAnchors() and MapQuery().

## Reference-mapping

# Set to TRUE in case you wanna run with 'Azimuth'
run.azimuth <- TRUE

if (run.azimuth) {
  query <- RunAzimuth(query, reference = "pbmcref")
} else {
  # Find anchors
  anchor <- FindTransferAnchors(
  reference = ref,
  query = query, 
  k.filter = NA,
  features = rownames(Loadings(ref[["refDR"]])),
  reference.assay = "refAssay", 
  query.assay = "RNA",
  reference.reduction = "refDR",
  normalization.method = "SCT",
  reference.neighbors = "refdr.annoy.neighbors",
  dims = 1:50
  )
  
  # Transfer labels
  query <- MapQuery(
  anchorset = anchor,
  query = query, 
  reference = ref,
  refdata = list(
    celltype.l1 = "celltype.l1",
    celltype.l2 = "celltype.l2"
  ),
  store.weights = TRUE,
  transferdata.args = list(n.trees = 20), 
  integrateembeddings.args = list(weight.reduction = "pcaproject"),
  projectumap.args = list(l2.norm = TRUE),
  reduction.model = "refUMAP"
  )
}

# Save query R object
saveRDS(object = query, file = file.path(res.dir[3], "query_refmap.rds"))






(4) Assess reference-mapping

(15 min)

AIM: Assess the accuracy of the reference-mapping task.


Run the R chunk code below to compare the predicted cell type labels for the COVID data set against the healthy human PBMCs with the ground-truth cell labels.

## Assessment of reference-mapping accuracy

# Plot UMAPs
refmap.plts <- list()
refmap.plts[[1]] <- DimPlot(ref, reduction = "refUMAP", group.by =  "celltype.l1", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) + NoLegend()
refmap.plts[[2]] <- DimPlot(ref, reduction = "refUMAP", group.by =  "celltype.l2", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) + NoLegend()
refmap.plts[[3]] <- DimPlot(query, reduction = "ref.umap", group.by =  "Cell.group", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) + NoLegend()
refmap.plts[[4]] <- DimPlot(query, reduction = "ref.umap", group.by =  "Cell.class_reannotated", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) +
  NoLegend()
refmap.plts[[5]] <- DimPlot(query, reduction = "ref.umap", group.by = "predicted.celltype.l1", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) +
  NoLegend()
refmap.plts[[6]] <- DimPlot(query, reduction = "ref.umap", group.by = "predicted.celltype.l2", 
                            label = TRUE, pt.size = 0.1, alpha = 0.1) + 
  NoLegend()

# Confusion matrices
celltype1xgroup <- table(query$predicted.celltype.l1, query$Cell.group)
celltype1xgroup <- celltype1xgroup %>% as.matrix.data.frame(.) %>% 
  `colnames<-`(colnames(celltype1xgroup)) %>% `row.names<-`(row.names(celltype1xgroup))
celltype1xclass <- table(query$predicted.celltype.l1, query$Cell.class_reannotated)
celltype1xclass <- celltype1xclass %>% as.matrix.data.frame(.) %>% 
  `colnames<-`(colnames(celltype1xclass)) %>% `row.names<-`(row.names(celltype1xclass))
celltype2xgroup <- table(query$predicted.celltype.l2, query$Cell.group)
celltype2xgroup <- celltype2xgroup %>% as.matrix.data.frame(.) %>% 
  `colnames<-`(colnames(celltype2xgroup)) %>% `row.names<-`(row.names(celltype2xgroup))
celltype2xclass <- table(query$predicted.celltype.l2, query$Cell.class_reannotated)
celltype2xclass <- celltype2xclass %>% as.matrix.data.frame(.) %>% 
  `colnames<-`(colnames(celltype2xclass)) %>% `row.names<-`(row.names(celltype2xclass))

Plot below the heatmaps of the confusion matrices between predicted cell type labels (celltype.l1, celltype.l2) versus ground-truth cell type labels (Cell.group, class_reannotated).

tbls <- list("celltype1xCell.group" = celltype1xgroup, "celltype1xclass_reannotated" = celltype1xclass, 
             "celltype2xCell.group" = celltype2xgroup, "celltype2xclass_reannotated" = celltype2xclass)
heat.list <- lapply(X = setNames(names(tbls), names(tbls)), FUN = function(comp) {
  Heatmap(matrix = t(apply(tbls[[comp]], 1, function(x) x/sum(x)*100)), name = "% of cells", 
          cluster_rows = F, cluster_columns = F, row_names_side = "left",
          show_column_names = T, show_row_names = TRUE,
          col = circlize::colorRamp2(c(0, 50, 100), c("white", "red1", "red4")), 
          column_names_side = "top", column_names_rot = 45, 
          layer_fun = function(j, i, x, y, width, height, fill, slice_r, slice_c) {
            v = pindex(tbls[[comp]], i, j)
            grid.text(sprintf("%.0f", v), x, y, gp = gpar(fontsize = 10))
            if(slice_r != slice_c) {
              grid.rect(gp = gpar(lwd = 2, fill = "transparent"))
            }
          }, 
          column_title = gsub("x", " vs ", comp), 
          rect_gp = gpar(col = "white", lwd = 2)
  )
})

# Print below
heat.list$celltype1xCell.group + heat.list$celltype1xclass_reannotated

heat.list$celltype2xCell.group + heat.list$celltype2xclass_reannotated


Project the data below onto the reference UMAP highlighting the predicted (celltype.l1, celltype.l2) and ground-truth cell type labels (Cell.group, class_reannotated).

refmap.plts[[1]] + refmap.plts[[2]]

refmap.plts[[3]] + refmap.plts[[4]]

refmap.plts[[5]] + refmap.plts[[6]]






R packages used and respective versions


## R packages and versions used in these analyses
sessionInfo()
## R version 4.1.0 (2021-05-18)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.5 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
## [1] ComplexHeatmap_2.15.4 patchwork_1.2.0       Azimuth_0.5.0        
## [4] shinyBS_0.61.1        Seurat_5.1.0          SeuratObject_5.0.2   
## [7] sp_2.1-4              dplyr_1.1.4          
## 
## loaded via a namespace (and not attached):
##   [1] rappdirs_0.3.3                    rtracklayer_1.54.0               
##   [3] scattermore_1.2                   R.methodsS3_1.8.2                
##   [5] tidyr_1.3.1                       JASPAR2020_0.99.10               
##   [7] ggplot2_3.5.1                     bit64_4.0.5                      
##   [9] knitr_1.47                        irlba_2.3.5.1                    
##  [11] DelayedArray_0.20.0               R.utils_2.12.3                   
##  [13] data.table_1.15.4                 doParallel_1.0.17                
##  [15] KEGGREST_1.34.0                   TFBSTools_1.32.0                 
##  [17] RCurl_1.98-1.14                   AnnotationFilter_1.18.0          
##  [19] generics_0.1.3                    BiocGenerics_0.40.0              
##  [21] GenomicFeatures_1.46.5            cowplot_1.1.3                    
##  [23] RSQLite_2.3.7                     RANN_2.6.1                       
##  [25] future_1.33.2                     bit_4.0.5                        
##  [27] tzdb_0.4.0                        spatstat.data_3.1-2              
##  [29] xml2_1.3.6                        httpuv_1.6.15                    
##  [31] SummarizedExperiment_1.24.0       assertthat_0.2.1                 
##  [33] DirichletMultinomial_1.36.0       gargle_1.5.2                     
##  [35] xfun_0.45                         hms_1.1.3                        
##  [37] jquerylib_0.1.4                   evaluate_0.24.0                  
##  [39] promises_1.3.0                    fansi_1.0.6                      
##  [41] restfulr_0.0.15                   progress_1.2.3                   
##  [43] caTools_1.18.2                    dbplyr_2.5.0                     
##  [45] igraph_2.0.3                      DBI_1.2.3                        
##  [47] htmlwidgets_1.6.4                 spatstat.geom_3.2-9              
##  [49] googledrive_2.1.1                 stats4_4.1.0                     
##  [51] purrr_1.0.2                       RSpectra_0.16-1                  
##  [53] annotate_1.72.0                   biomaRt_2.50.3                   
##  [55] deldir_2.0-4                      MatrixGenerics_1.6.0             
##  [57] vctrs_0.6.5                       Biobase_2.54.0                   
##  [59] SeuratDisk_0.0.0.9021             ensembldb_2.18.4                 
##  [61] ROCR_1.0-11                       abind_1.4-5                      
##  [63] cachem_1.1.0                      withr_3.0.0                      
##  [65] BSgenome.Hsapiens.UCSC.hg38_1.4.4 BSgenome_1.62.0                  
##  [67] progressr_0.14.0                  presto_1.0.0                     
##  [69] sctransform_0.4.1                 GenomicAlignments_1.30.0         
##  [71] prettyunits_1.2.0                 goftest_1.2-3                    
##  [73] cluster_2.1.2                     dotCall64_1.1-1                  
##  [75] lazyeval_0.2.2                    seqLogo_1.60.0                   
##  [77] crayon_1.5.3                      hdf5r_1.3.10                     
##  [79] spatstat.explore_3.2-7            labeling_0.4.3                   
##  [81] pkgconfig_2.0.3                   GenomeInfoDb_1.30.1              
##  [83] nlme_3.1-152                      ProtGenerics_1.26.0              
##  [85] rlang_1.1.4                       globals_0.16.3                   
##  [87] lifecycle_1.0.4                   miniUI_0.1.1.1                   
##  [89] filelock_1.0.3                    fastDummies_1.7.3                
##  [91] klippy_0.0.0.9500                 BiocFileCache_2.2.1              
##  [93] pbmc3k.SeuratData_3.1.4           SeuratData_0.2.2.9001            
##  [95] cellranger_1.1.0                  polyclip_1.10-6                  
##  [97] RcppHNSW_0.6.0                    matrixStats_1.1.0                
##  [99] lmtest_0.9-40                     Matrix_1.6-5                     
## [101] Rhdf5lib_1.16.0                   zoo_1.8-12                       
## [103] GlobalOptions_0.1.2               ggridges_0.5.6                   
## [105] googlesheets4_1.1.1               png_0.1-8                        
## [107] viridisLite_0.4.2                 rjson_0.2.21                     
## [109] shinydashboard_0.7.2              bitops_1.0-7                     
## [111] R.oo_1.26.0                       rhdf5filters_1.6.0               
## [113] KernSmooth_2.23-20                spam_2.10-0                      
## [115] Biostrings_2.62.0                 blob_1.2.4                       
## [117] shape_1.4.6.1                     stringr_1.5.1                    
## [119] parallelly_1.37.1                 spatstat.random_3.2-3            
## [121] readr_2.1.5                       S4Vectors_0.32.4                 
## [123] CNEr_1.30.0                       scales_1.3.0                     
## [125] memoise_2.0.1                     magrittr_2.0.3                   
## [127] plyr_1.8.9                        ica_1.0-3                        
## [129] zlibbioc_1.40.0                   compiler_4.1.0                   
## [131] BiocIO_1.4.0                      RColorBrewer_1.1-3               
## [133] clue_0.3-65                       fitdistrplus_1.1-11              
## [135] Rsamtools_2.10.0                  cli_3.6.3                        
## [137] XVector_0.34.0                    listenv_0.9.1                    
## [139] pbapply_1.7-2                     MASS_7.3-54                      
## [141] tidyselect_1.2.1                  stringi_1.8.4                    
## [143] highr_0.11                        yaml_2.3.8                       
## [145] ggrepel_0.9.5                     sass_0.4.9                       
## [147] fastmatch_1.1-4                   EnsDb.Hsapiens.v86_2.99.0        
## [149] tools_4.1.0                       future.apply_1.11.2              
## [151] parallel_4.1.0                    circlize_0.4.16                  
## [153] rstudioapi_0.13                   TFMPvalue_0.0.9                  
## [155] foreach_1.5.2                     gridExtra_2.3                    
## [157] farver_2.1.2                      Rtsne_0.17                       
## [159] digest_0.6.36                     shiny_1.8.1.1                    
## [161] pracma_2.4.4                      Rcpp_1.0.12                      
## [163] GenomicRanges_1.46.1              later_1.3.2                      
## [165] RcppAnnoy_0.0.22                  httr_1.4.7                       
## [167] AnnotationDbi_1.56.2              colorspace_2.1-0                 
## [169] XML_3.99-0.17                     fs_1.6.4                         
## [171] tensor_1.5                        reticulate_1.38.0                
## [173] IRanges_2.28.0                    splines_4.1.0                    
## [175] uwot_0.2.2                        RcppRoll_0.3.0                   
## [177] spatstat.utils_3.0-5              plotly_4.10.4                    
## [179] xtable_1.8-4                      jsonlite_1.8.8                   
## [181] poweRlaw_0.80.0                   pbmcref.SeuratData_1.0.0         
## [183] R6_2.5.1                          pillar_1.9.0                     
## [185] htmltools_0.5.8.1                 mime_0.12                        
## [187] glue_1.7.0                        fastmap_1.2.0                    
## [189] DT_0.33                           BiocParallel_1.28.3              
## [191] codetools_0.2-18                  Signac_1.13.0                    
## [193] utf8_1.2.4                        lattice_0.20-44                  
## [195] bslib_0.7.0                       spatstat.sparse_3.1-0            
## [197] tibble_3.2.1                      curl_5.2.1                       
## [199] leiden_0.4.3.1                    gtools_3.9.5                     
## [201] shinyjs_2.1.0                     GO.db_3.14.0                     
## [203] survival_3.2-11                   rmarkdown_2.27                   
## [205] munsell_0.5.1                     GetoptLong_1.0.5                 
## [207] rhdf5_2.38.1                      GenomeInfoDbData_1.2.7           
## [209] iterators_1.0.14                  reshape2_1.4.4                   
## [211] gtable_0.3.5